package util

import (
	"encoding/base64"
	"fmt"
	"github.com/go-admin-team/go-admin-core/sdk/config"
	"github.com/skip2/go-qrcode"
	"os"
	"sort"
	"tuowei.com/pkg/xlog"
)

// 登陆的时候根据电话号码生成一个redis的key
// prefix 比如学生端可用student,教师端可用teacher
func MakeMessageCodeKey(prefix, phone string) string {
	return fmt.Sprintf("tuowei.%s.login.message.%s", prefix, phone)

}

func MakeStoreValueKey(prefix, key string) string {
	mode := config.ApplicationConfig.Mode
	return fmt.Sprintf("tuowei.store.message.%s.%s.%s", mode, prefix, key)
}

// MakeQrcodeBase64 生成二维码的base64
// content 需要写入的字符串
// size 图片大小 size*size px
func MakeQrcodeBase64(content string, size int) []byte {
	s0 := []byte("data:image/png;base64,")
	src, _ := qrcode.Encode(content, qrcode.Medium, size)
	enc := base64.StdEncoding
	buf := make([]byte, enc.EncodedLen(len(src)))
	enc.Encode(buf, src)
	// base64加上前缀
	// 此处只生成png的图片
	buf = append(s0, buf...)
	return buf
}

func MakeQrcodeBase642(content string, size int) []byte {
	byts, _ := qrcode.Encode(content, qrcode.Medium, size)
	str := base64.StdEncoding.EncodeToString(byts)
	xlog.Debug(str)
	//xlog.Pretty(string(byts))
	f, err := os.OpenFile("2.png", os.O_CREATE|os.O_RDWR, os.ModePerm)
	xlog.Error(err)
	defer f.Close()
	f.Write(byts)
	xlog.Error(string(byts))
	return byts
}

func IsInArray(target string, array []string) bool {
	sort.Strings(array)
	index := sort.SearchStrings(array, target)
	//index的取值：[0,len(str_array)]
	if index < len(array) && array[index] == target { //需要注意此处的判断，先判断 &&左侧的条件，如果不满足则结束此处判断，不会再进行右侧的判断
		return true
	}
	return false
}
